/*
 * Copyright © 2020-2021 尛飛俠（Denvie） All rights reserved.
 */

package cn.denvie.springboot.freemarker.custom;

import freemarker.template.SimpleSequence;
import freemarker.template.TemplateBooleanModel;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException;

import java.math.BigDecimal;
import java.util.List;

/**
 * 自定义排序函数。
 *
 * @author Denvie
 * @date 2021/5/25
 * @since 1.0.0
 */
public class SortNumberMethod implements TemplateMethodModelEx {
    @Override
    public Object exec(List arguments) throws TemplateModelException {
        // 获取第一个参数
        SimpleSequence arg0 = (SimpleSequence) arguments.get(0);
        List<BigDecimal> list = arg0.toList();
        // 获取第二个参数
        TemplateBooleanModel arg1 = (TemplateBooleanModel) arguments.get(1);
        // 排序
        list.sort((o1, o2) -> {
            try {
                return arg1.getAsBoolean() ? o1.compareTo(o2) : o2.compareTo(o1);
            } catch (TemplateModelException e) {
                return o1.compareTo(o2);
            }
        });
        return list;
    }
}
